package day05;
//数组的演示
import java.util.Arrays;
public class ArrayDemo {
    public static void main(String[] args) {

        /*
        //声明整型数组a 包含5个元素 每个元素都是int类型 默认值为0
        int[] a = new int[5];
        //声明浮点数组d 包含10个元素 每个元素都是double类型 默认值为0.0
        double[] d =new double[10];
        //声明布尔类型数组b 包含26个元素 每个元素都是boolean类型 默认值为false
        boolean[] b =new boolean[26];
        */


        //2)数组的初始化：初始化是数组中的元素
        /*

        int[] arr1 = new int[3];//0,0,0
        int[] arr2 ={2,5,8};//2,5,8
        int[] arr3 =new int[]{2,5,8};//2,5,8
        int []arr4;
//        arr={2,8,5};//编译错误,此方式只能声明同时初始化
        arr4 =new int[]{2,5,8};//正确

        double[] a1 =new double[3];
        double[] a2 ={2.0,2.2};
        double[] a3 =new double[]{1.1,2.2};
        double[] a4;
        a4 = new double[]{3.3};

         */


        //3)数组的访问
        /*
        int[] arr = new int[3];
        System.out.println("数组的长度："+arr.length);//3, 长度即元素的个数
        System.out.println("第一个元素为："+arr[0]);//0
        arr[0] = 100;//给第一个元素赋值
        arr[1]=200;//给第二个元素赋值
        arr[2]=300;//给第三个元素赋值
        //arr[3]=100;//运行时会发生数组下标越界异常
        System.out.println(arr[2]);//300，输出最后一个元素值
        System.out.println(arr[arr.length-1]);//300 输出最后一个元素值（和arr【2】同样道理）


        int[] ar =new int[3];
        System.out.println(ar[0]);
        System.out.println(ar[1]);
        System.out.println(ar[2]);
        System.out.println("数组的长度"+ar.length+ "默认值：");

        ar[1] = 666;
        System.out.println(ar[1]);

         */


        //4)数组的遍历/迭代：从头到位挨个走一遍

        /*
        int[]as =new int[10];
        for (int i=0;i<as.length;i++){//便利arr  as.length 数组元素的长度（不要写i<10）
            as[i] = (int) (Math.random()*100);//给每个元素赋值为0——99
            System.out.println(as[i]);//输出每个元素的值
        }

         */


          //5)数组的复制：方式一的灵活性比较好

 //方式一：
        /*
        int[] a={10,20,30,40,50};
        int[] b =new int[6];//0 0 0 0 0 0
        //a:原数组
        //1：源数组的起始下标
        //b:目标数组
        //2：目标数组的起始下标
        //4：要复制的元素个数
        System.arraycopy(a,1,b,2,4);
        for (int i=0;i<b.length;i++){
            System.out.print(" "+b[i]+"\t");// 0 0 20 30 40

        }
        System.out.println();


        int[] x = {1,2,3,4,5,6};
        int[] c  ={11,12,13,14,15,16};
        System.arraycopy(x,0,c,3,3);
        for (int i=0;i<c.length;i++){
            System.out.print(" "+c[i]+"\t");//11 12 13 1 2 3
        }

         */

 //方式二：
        /*
        int[] a ={10,20,30,40,50};
        //a:源数组
        //b：目标数组
        //6：目标数组的长度
        // --若目标数组的长度>原数组的长度时，后面自动补位（默认值）
        // --若目标数组的长度<源数组的长度时，多余部位自动截掉
        int[] b = Arrays.copyOf(a,6);//灵活性差
        for (int i=0;i<b.length;i++){
            System.out.print(" "+b[i]);//10 20 30 40 50 0
        }

        System.out.println();

        int[] c = Arrays.copyOf(a,3);//灵活性差
        for (int i=0;i<c.length;i++){
            System.out.print(" "+c[i]);//10 20 30
        }

         */


        //6)数组扩容：
        int[] a={10,20,30,40,50};

        a=Arrays.copyOf(a,a.length+1);

        for (int i =0;i<a.length;i++){
            System.out.println(a[i]);
        }




































    }
}
